Pooling layer也可以叫做max pooling,池化層所做的就是取出區域內的最大值,這種做法可以降低雜訊的干擾,因為在訓練過程中,數字如果變大我們可以理解為找到特定特徵,因此我們透過池化層將這些相對重要的部分留下,或許能增加模型訓練的準確度。
在卷積過程中,每經過一層卷積輸出就會變小,但當我們對於輸入做處理,在外圍加上一圈皆為零的填充職,增加矩陣大小,如此一來,不但不會影響輸出值,連輸出的矩陣大小都不會有所改變。
我們可以用簡單的程式呈現經過卷積後而變小的張量。
在pytorch中,Conv1d預設的就是tensorflow的valid,也就是不會填充的。
import torch
input = torch.FloatTensor([[[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]]])
conv = torch.nn.Conv1d(1,1,6,2)
input.size()
input = torch.autograd.Variable(input)
input
output = conv(input)
output.size()
所以我們可以藉由這張輸出結果知道,輸出會因為卷積而變小
由這張圖我們可以將步長理解為卷積層移動的距離,也更好理解為什麼會需要填充來維持輸出的大小。